﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoDatos;

namespace BussinessLogic
{
    public class Evaluacion
    {
        public Evaluacion()
        {

        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="idUsuario"></param>
        /// <param name="idCriIntegracion"></param>
        /// <param name="seleccionado"></param>
        public void InsertUpdateCriteriosIntegracion(int idUsuario, int idCriIntegracion, bool seleccionado)
        {
            Criterio criterio = new Criterio();
            criterio.IdCriterioIntegracion = idCriIntegracion;
            criterio.Seleccionado = seleccionado;
            criterio.IdUsuario = idUsuario;
            IEnumerable<Criterio> criterios =
                FabricaContexto.Contexto.Criterios.Where(x => x.IdCriterioIntegracion ==
                    idCriIntegracion && x.IdUsuario == idUsuario);

            if (criterios == null || criterios.Count() == 0)
            {
                FabricaContexto.Contexto.Criterios.InsertOnSubmit(criterio);
            }
            else
            {
                Criterio criterioExistente = criterios.First();
                criterioExistente.Seleccionado = seleccionado;
            }

            FabricaContexto.Contexto.SubmitChanges();
        }

        public void InsertarUpdateEvaluacion(int idUsuario, int idPregunta, int idNivelSatisfaccion)
        {
            AsociacionNivelesPregunta evaluacionNivel = new AsociacionNivelesPregunta();
            evaluacionNivel.IdNivelSatisfaccion = idNivelSatisfaccion;
            evaluacionNivel.IdUsuario = idUsuario;
            evaluacionNivel.IdPregunta = idPregunta;
            IEnumerable<AsociacionNivelesPregunta> evaluaciones =
                FabricaContexto.Contexto.AsociacionNivelesPreguntas.Where(x => x.IdPregunta ==
                    idPregunta && x.IdUsuario == idUsuario);

            if (evaluaciones == null || evaluaciones.Count() == 0)
            {
                FabricaContexto.Contexto.AsociacionNivelesPreguntas.InsertOnSubmit(evaluacionNivel);
            }
            else
            {
                AsociacionNivelesPregunta evaluacionExistente = evaluaciones.First();
                evaluacionExistente.IdNivelSatisfaccion = idNivelSatisfaccion;
            }

            FabricaContexto.Contexto.SubmitChanges();



        }

        public void InsertarOtrasObservaciones(int idUsuario, string observacion, string otros)
        {
            ObservacionesEvaluacion obs = new ObservacionesEvaluacion();
            obs.IdUsuario = idUsuario;
            obs.Observaciones = observacion;
            obs.Otros = otros;
            obs.Fecha = DateTime.Now;


            IEnumerable<ObservacionesEvaluacion> observaciones =
                FabricaContexto.Contexto.ObservacionesEvaluacions.Where(x => x.IdUsuario == idUsuario);

            if (observaciones == null || observaciones.Count() == 0)
            {
                FabricaContexto.Contexto.ObservacionesEvaluacions.InsertOnSubmit(obs);
            }
            else
            {
                ObservacionesEvaluacion obsExistente = observaciones.First();
                obsExistente.Fecha = DateTime.Now;
                obsExistente.Observaciones = observacion;
                obsExistente.Otros = otros;

                // FabricaContexto.Contexto.ObservacionesEvaluacions.Attach(obsExistente);
                // FabricaContexto.Contexto.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, obsExistente);

            }

            FabricaContexto.Contexto.SubmitChanges();


        }



    }
}
